﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Obsidian.Common
{
    /// <summary>
    /// Gizmos are used to give visual debugging or setup aids in the scene view.
    /// </summary>
    public class Gizmos
    {
        /// <summary>
        /// Sets the color for the gizmos that will be drawn next.
        /// </summary>
        public static Color Color;

        /// <summary>
        /// Set the gizmo matrix used to draw all gizmos.
        /// </summary>
        public static Matrix Matrix;

        /// <summary>
        /// Draw a solid box with center and size.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="size"></param>
        public static void DrawBox(Vector2 center, Vector2 size)
        {

        }

        /// <summary>
        /// Draw a texture in the scene.
        /// </summary>
        /// <param name="screenRect"></param>
        /// <param name="texture"></param>
        public static void DrawGUITexture(Rectangle screenRect, Texture texture)
        {

        }

        /// <summary>
        /// Draw a texture in the scene.
        /// </summary>
        /// <param name="screenRect"></param>
        /// <param name="texture"></param>
        /// <param name="mat"></param>
        public static void DrawGUITexture(Rectangle screenRect, Texture texture, Material mat)
        {

        }

        /// <summary>
        /// Draw a texture in the scene.
        /// </summary>
        /// <param name="screenRect"></param>
        /// <param name="texture"></param>
        /// <param name="leftBorder"></param>
        /// <param name="rightBorder"></param>
        /// <param name="topBorder"></param>
        /// <param name="bottomBorder"></param>
        public static void DrawGUITexture(Rectangle screenRect, Texture texture, int leftBorder, int rightBorder, int topBorder, int bottomBorder)
        {

        }

        /// <summary>
        /// Draw a texture in the scene.
        /// </summary>
        /// <param name="screenRect"></param>
        /// <param name="texture"></param>
        /// <param name="leftBorder"></param>
        /// <param name="rightBorder"></param>
        /// <param name="topBorder"></param>
        /// <param name="bottomBorder"></param>
        /// <param name="mat"></param>
        public static void DrawGUITexture(Rectangle screenRect, Texture texture, int leftBorder, int rightBorder, int topBorder, int bottomBorder, Material mat)
        {

        }

        /// <summary>
        /// Draw an icon at a position in the scene view.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="name"></param>
        public static void DrawIcon(Vector2 center, string name)
        {

        }

        /// <summary>
        /// Draw an icon at a position in the scene view.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="name"></param>
        /// <param name="allowScaling"></param>
        public static void DrawIcon(Vector2 center, string name, bool allowScaling)
        {

        }

        /// <summary>
        /// Draws a line starting at from towards to.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        public static void DrawLine(Vector2 from, Vector2 to)
        {

        }

        /// <summary>
        /// Draws a ray starting at from to from + direction.
        /// </summary>
        /// <param name="r"></param>
        public static void DrawRay(Ray r)
        {

        }

        /// <summary>
        /// Draws a ray starting at from to from + direction.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="direction"></param>
        public static void DrawRay(Vector2 from, Vector2 direction)
        {

        }

        /// <summary>
        /// Draws a solid circle with center and radius.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="radius"></param>
        public static void DrawCircle(Vector2 center, float radius)
        {

        }

        /// <summary>
        /// Draw a wireframe box with center and size.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="size"></param>
        public static void DrawWireBox(Vector2 center, Vector2 size)
        {

        }

        /// <summary>
        /// Draws a wireframe circle with center and radius.
        /// </summary>
        /// <param name="center"></param>
        /// <param name="radius"></param>
        public static void DrawWireCircle(Vector2 center, float radius)
        {

        }
    }
}
